package 二0年4月;
/*
* 在一个整数数组中，“峰”是大于或等于相邻整数的元素，相应地，
* “谷”是小于或等于相邻整数的元素。例如，在数组{5, 8, 6, 2, 3, 4, 6}中，
* {8, 6}是峰， {5, 2}是谷。现在给定一个整数数组，将该数组按峰与谷的交替顺序排序。
示例:
输入: [5, 3, 1, 2, 3]
输出: [5, 1, 3, 2, 3]
提示：
nums.length <= 10000

思路： 本题的意思就是让数字排列构成一个波形图，一个波形是大--小---大，即按照
峰--谷---峰的方式去排列数据，

规则：1：如果i的位置为峰的位置，则前面一个位置肯定为谷，当前面一位的数据比它大时，则交换，否则继续遍历。
      2：如果当前位置为谷时，则前面一个位置为峰，判断当前位置如果大于前一个位置时，就交换，否则跳过。
* */
public class InterView1011 {
    public void wiggleSort(int[] nums) {
        //i从i开始，因为要和前一位比较
        for (int i = 1; i <nums.length ; i++) {
            if(i%2==0){  //证明是峰 ，峰为偶数
                if(nums[i]<nums[i-1]){  //前面一位比当前位大，不符合峰，所以交换
                    swap(nums,i,i-1);
                }
            }else {  //为谷
                if(nums[i]>nums[i-1]){  //当前位置大于前一个位置，不符合谷，就交换
                    swap(nums,i,i-1);
                }
            }
        }
    }

    public void swap(int[] nums,int i,int j){
        int temp=nums[i];
        nums[i]=nums[j];
        nums[j]=temp;
    }
}
